package com.futvan.tr;

import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

public class z {
	

	/**
	 * 消息提示
	 * @param info
	 */
	public static void alert(String info) {
		JOptionPane.showMessageDialog(null, info, "提示消息",JOptionPane.INFORMATION_MESSAGE);
	}
	
	public static boolean alertReturn(String info) {
		int isdelete = JOptionPane.showConfirmDialog(null,info,"信息提示",JOptionPane.YES_NO_OPTION);
		if(isdelete==0) {
			return true;
		}else {
			return false;
		}
	}
	

    /**
     * 抛出异常
     * @param e
     * @throws Exception
     */
    public static void Exception(String e) throws Exception {
        throw new Exception(e);
    }
    /**
	 * 异常信息转字符串
	 * @param e 异常对象
	 * @return String
	 */
	public static String ExceptionToString(Exception e) {
		String result = "";
		if(e!=null && e instanceof Exception) {
			StringWriter sw = new StringWriter();  
			e.printStackTrace(new PrintWriter(sw, true));
			result = sw.toString();
		}
		return result;
	}

    /**
     * 是否不为空
     * @return
     */
    public static boolean isNotNull(Object obj) {
        if(obj!=null && !"".equals(obj) && !"null".equals(obj) && !"NULL".equals(obj) && !"Null".equals(obj) && !"NuLL".equals(obj) && !"undefined".equals(obj) && !"UNDEFINED".equals(obj)&& !"Undefined".equals(obj)) {
            return true;
        }else {
            return false;
        }
    }

    /**
     * 是否为空
     * @return
     */
    public static boolean isNull(Object obj) {
        if(obj==null || "".equals(obj) || "null".equals(obj) || "NULL".equals(obj) || "Null".equals(obj) || "NuLL".equals(obj) || "undefined".equals(obj) || "UNDEFINED".equals(obj) || "Undefined".equals(obj)) {
            return true;
        }else {
            return false;
        }
    }


    /**
     * 遍历文件夹
     * @param path 目录
     * @return List<String>
     */
    public static List<File> getPathAllFiles(String path) {
        List<File> files = new ArrayList<File>();
        return getFiles(path,files,true,null);
    }


    private static List<File> getFiles(String path,List<File> files,boolean isLower,String extension){
        if(isNull(files)) {
            files = new ArrayList<File>();
        }
        //获取本级目录所有文件与文件夹对象
        File dir = new File(path);
        File[] filesArray = dir.listFiles();
        //如果本级目录没有文件与文件夹，直接返回
        if (filesArray == null)
            return files;
        for (int i = 0; i < filesArray.length; i++) {
            //判读是否查找下级目录
            if (filesArray[i].isDirectory() && isLower) {
                getFiles(filesArray[i].getAbsolutePath(),files,isLower,extension);
            } else {
                //判读是否是目录
                if (!filesArray[i].isDirectory()) {
                    //当前文件名
                    String nowFileName = filesArray[i].getAbsolutePath().toLowerCase();
                    //查找指定扩展名文件
                    if(isNotNull(extension)) {
                        if(!".".equals(extension.substring(0, 1))) {
                            extension = "."+extension;
                        }
                        String nowFileExtension = nowFileName.substring(nowFileName.length()-extension.length());
                        //如果当前文件扩展名与查找目标扩展名相同，加入到返回结果
                        if(nowFileExtension.equals(extension)) {
                            files.add(filesArray[i]);
                        }
                    }else {
                        files.add(filesArray[i]);
                    }
                }
            }
        }
        return files;
    }


}
